Gram-Schmidt process for Lorentzian spaces
Theorem : Given a set of $n$ non-null linearly-independent vectors $\{ v_i \}$, we can build an orthonormal basis of a Lorentz vector space $\{ e_i \}$ such that our first vector $v_0$ is colinear to $e_0$.
Proof : First, we define our basis vector $e_0$ by
\begin{equation} e_0 = \frac{v_0}{\| v_0 \|} \end{equation}Each successive basis vector is defined by a vector
\begin{equation} u_i = v_i - \sum_{j = 0}^{j < i} \frac{\langle u_j, v_i \rangle}{\langle u_j, u_j \rangle} u_j \end{equation}with the basis vector
\begin{equation} e_i = \frac{u_i}{\| u_i \|} \end{equation}In four dimensions for instance, the process will be
\begin{eqnarray} u_0 &=& v_0\\ u_1 &=& v_1 - \frac{\langle u_0, v_1 \rangle}{\langle u_0, u_0 \rangle} u_0\\ u_2 &=& v_2 - \frac{\langle u_0, v_2 \rangle}{\langle u_0, u_0 \rangle} u_0 - \frac{\langle u_1, v_2 \rangle}{\langle u_1, u_1 \rangle} u_1\\ u_3 &=& v_3 - \frac{\langle u_0, v_3 \rangle}{\langle u_0, u_0 \rangle} u_0 - \frac{\langle u_1, v_3 \rangle}{\langle u_1, u_1 \rangle} u_1 - \frac{\langle u_2, v_3 \rangle}{\langle u_2, u_2 \rangle} u_2\\ \end{eqnarray}Let's now show that this basis is orthonormal. By induction, this is true for one dimension :
\begin{equation} \langle e_0, e_0 \rangle = \frac{\langle v_0, v_0 \rangle}{\| v_0 \|^2} = \pm 1 \end{equation}depending on the norm of $v_0$. Now assuming it true for $n$ dimensions, let's show it valid for $n+1$ dimensions. We have a set of $n$ vectors giving rise to an orthonormal basis, and we add an extra vector $v_n$, giving rise to
\begin{equation} u_{n+1} = v_{n+1} - \sum_{j = 0}^{j < {n+1}} \frac{\langle u_j, v_{n+1} \rangle}{\langle u_j, u_j \rangle} u_j \end{equation}By the construction of $e_{n+1}$, it is obviously of unit norm ($\pm 1$). Let's show that $u_{n+1}$ is then orthogonal to every other vector. For $i < n+1$ :
\begin{eqnarray} \langle u_i, u_{n+1} \rangle &=& \langle u_i, v_{n+1} - \sum_{j = 0}^{j < {n+1}} \frac{\langle u_j, v_{n+1} \rangle}{\langle u_j, u_j \rangle} u_j \rangle\\ &=& \langle u_i, v_{n+1}\rangle - \sum_{j = 0}^{j < {n+1}} \frac{\langle u_j, v_{n+1} \rangle}{\langle u_j, u_j \rangle} \langle u_i, u_j \rangle\\ &=& \langle u_i, v_{n+1}\rangle - \sum_{j = 0}^{j < {n+1}} \frac{\langle u_j, v_{n+1} \rangle}{\langle u_j, u_j \rangle} \langle u_i, u_j \rangle \delta_{ij}\\ &=& \langle u_i, v_{n+1}\rangle - \langle u_i, v_{n+1} \rangle &=& 0 \end{eqnarray}By extension, this is also true of $e_i$ and $e_{n+1}$, and therefore,
\begin{equation} \langle e_i, e_j \rangle = \pm \delta_{ij} \end{equation}Our old basis $\{ e_i' \}$ was made of eigenvectors of the metric tensor, ie :
\begin{equation} \mathbf{\eta} e_i' = \pm e_i' \end{equation}which is indeed true as
\begin{equation} (e_j')^\top \mathbf{\eta} e_i' = \pm (e_j')^\top e_i' = \pm \delta_{ij} \end{equation}with in particular $\langle e_j', e_i' \rangle = \eta_{ij}$. Our new basis is a linear transformation of the old basis, $e_i = T_i^j e'_j$, and our new basis so that this equality is $(T_i^j) e_i$. By Sylvester's law of inertia, there must be the same number of positive and negative eigenvalues, therefore, with some eventual re-ordering of our basis,
\begin{equation} \langle e_i, e_j \rangle = \eta_{ij} \end{equation}Corrolaries : If we take a single timelike vector $v_0$, and as our remaining vectors the spacelike vector of our old basis, there is a new basis for which $v_0 = \| v_0 \| e_0$. This follows from the fact that a timelike vector can never be linearly dependent on spacelike vectors.